package com.wechat.page;

import java.net.URL;

import com.swak.ui.Media;
import com.swak.utils.FileUtils;
import com.swak.utils.StringUtils;
import com.wechat.enums.MessageType;

import lombok.Getter;
import lombok.RequiredArgsConstructor;

/**
 * 文件类型
 * 
 * @author DELL
 */
@Getter
@RequiredArgsConstructor
public enum Medias {

	/**
	 * 图片
	 */
	Image(Media.Image, images("file_img.png", "file_img@2x.png", "file_img@3x.png"), MessageType.Image),

	/**
	 * 压缩文件
	 */
	Zip(Media.Zip, images("file_zip.png", "file_zip@2x.png", "file_zip@3x.png"), MessageType.File),

	/**
	 * 视频文件
	 */
	Video(Media.Video, images("file_video.png", "file_video@2x.png", "file_video@3x.png"), MessageType.Video),

	/**
	 * 音频文件
	 */
	Audio(Media.Audio, images("file_mp3.png", "file_mp3@2x.png", "file_mp3@3x.png"), MessageType.Audio),

	/**
	 * Excel
	 */
	Excel(Media.Excel, images("file_excel.png", "file_excel@2x.png", "file_excel@3x.png"), MessageType.File),

	/**
	 * Word
	 */
	Word(Media.Word, images("file_docx.png", "file_docx@2x.png", "file_docx@3x.png"), MessageType.File),

	/**
	 * PPT
	 */
	Ppt(Media.Ppt, images("file_ppt.png", "file_ppt@2x.png", "file_ppt@3x.png"), MessageType.File),

	/**
	 * PDF
	 */
	Pdf(Media.Pdf, images("file_pdf.png", "file_pdf@2x.png", "file_pdf@3x.png"), MessageType.File),

	/**
	 * 文本文档
	 */
	Txt(Media.Txt, images("file_txt.png", "file_txt@2x.png", "file_txt@3x.png"), MessageType.File),

	/**
	 * 其他
	 */
	Other(Media.Other, images("file_none.png", "file_none@2x.png", "file_none@3x.png"), MessageType.File),

	/**
	 * 其他
	 */
	Folder(Media.Folder, images("folder.png", "folder@2x.png", "folder@3x.png"), MessageType.File);

	/**
	 * 媒体类型
	 */
	public final Media media;

	/**
	 * 图标集
	 */
	public final URL[] images;

	/**
	 * 消息类型
	 */
	public final MessageType mess;

	/**
	 * 判断文件的类型
	 * 
	 * @param file
	 * @return
	 */
	public static Medias of(String file) {
		String suffix = FileUtils.getFileSuffix(file);
		if (StringUtils.isBlank(suffix)) {
			return Medias.Other;
		}
		Media media = Media.of(file);
		for (Medias m : Medias.values()) {
			if (m.media == media) {
				return m;
			}
		}
		return Medias.Other;
	}

	/**
	 * 加载图片
	 * 
	 * @param images
	 * @return
	 */
	public static URL[] images(String... images) {
		URL[] urls = new URL[images.length];
		for (int i = 0; i < images.length; i++) {
			urls[i] = Medias.class.getResource("/material/" + images[i]);
		}
		return urls;
	}
}
